package com.itkaien;

public class Demo03TwoParents {

    public static void main(String[] args) {



        //双亲委派机制 ： 父类加载器加载的类，子类加载器加载的类，子类加载器加载的类，子类加载器加载的类，子类加载器加载的类，子类加载器加载的类
        // ，子类加载器加载的类，子类加载器加载的类，子类加载器加载的类，
        // 子类加载器加载的类，子类加载器加载的类，子类加载器加载

        // 双亲委派机制 ： 自低向上检验是否有父类加载器加载的类，如果有，则使用父类加载器加载的类，
       //如果没有则从顶至下尝试加载 如果某层可以加载那就直接加载返回


        //打破双亲委派机制 ：1.自定义类加载器
        //2.JDBC加载机制 通过spi 机制 借用线程 应用程序的类加载器加载驱动类 注：线程的类加载器是双亲委派机制默认是应用程的类加载器
        //这个案例事实上没有具体打破双亲委派机制， 例如 driverManager是符合双亲委派的  只是加载类的时候会去加读取spi文件
        //指定加载驱动类加载 ，驱动类加载也是符合双亲委派机制的


         //JDK7 JDK8对于方法区的实现
        //JDK7方法区在堆中，JDK8方法区在堆外（元空间），堆外内存是直接内存相当于电脑内存

        String s = "itkaien";
        String s1 = new String("itkaien");
        System.out.println(s.intern()== s);
        System.out.println(s1.intern()== s1);





    }


}
